package br.com.manutencao.entities;

import java.io.Serializable;
import java.util.Date;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;

@Entity
@NamedQueries({
	@NamedQuery(name="Chamado.findAll", query="select c from Chamado c"),
	@NamedQuery(name="Chamado.findOpen", query="select c from Chamado c where fechamento is null"),
	@NamedQuery(name="Chamado.findById", query="select c from Chamado c where c.id = :id"),
	@NamedQuery(name="Chamado.filtro", query="select c from Chamado c where c.maquina = :maquina and c.abertura between data_inicial and :data_final")
})
public class Chamado implements Serializable{

	private static final long serialVersionUID = 1L;

	@Id
	@GeneratedValue
	private int id;
	
	@ManyToOne
	private Maquina maquina;
		
	@ManyToOne
	private TipoDefeito tipoDefeito;
	
	@ManyToOne
	private Funcionario funcionario;
	
	private String descricao;
	
	private Date abertura;
	
	private Date fechamento;

	
	//getters and setters
	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}

	public TipoDefeito getTipoDefeito() {
		return tipoDefeito;
	}

	public void setTipoDefeito(TipoDefeito tipoDefeito) {
		this.tipoDefeito = tipoDefeito;
	}

	public Funcionario getFuncionario() {
		return funcionario;
	}

	public void setFuncionario(Funcionario funcionario) {
		this.funcionario = funcionario;
	}

	public String getDescricao() {
		return descricao;
	}

	public void setDescricao(String descricao) {
		this.descricao = descricao;
	}

	public Date getAbertura() {
		return abertura;
	}

	public void setAbertura(Date abertura) {
		this.abertura = abertura;
	}

	public Date getFechamento() {
		return fechamento;
	}

	public void setFechamento(Date fechamento) {
		this.fechamento = fechamento;
	}

	public void setMaquina(Maquina maquina) {
		this.maquina = maquina;
	}

	public Maquina getMaquina() {
		return maquina;
	}

}
